package cn.angis.quartz.dto.output;

import cn.angis.common.util.StringU;
import cn.angis.db.model.DtoOutput;
import cn.angis.quartz.util.CronUtils;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 包名称：cn.angis.quartz.dto.output
 * 类名称：JobOutput
 * 类描述：定时任务调度表
 * 创建人：@author angis.cn
 * 创建日期： 2025-06-04
 */
@Data
public class JobOutput extends DtoOutput {


    /**
     * 任务ID
     */
    @ExcelProperty("日志序号")
    private String id;

    /**
     * 任务名称
     */
    @ExcelProperty("任务名称")
    private String name;

    /**
     * 任务组名
     */
    @ExcelProperty("任务组名")
    private String jobGroup;

    /**
     * 调用目标字符串
     */
    @ExcelProperty("调用目标字符串")
    private String invokeTarget;

    /**
     * cron执行表达式
     */
    @ExcelProperty("cron表达式")
    private String cronExpression;

    /**
     * 计划执行错误策略（1立即执行 2执行一次 3放弃执行）
     */
    @ExcelProperty("执行策略")
    private String misfirePolicy;

    /**
     * 是否并发执行（0允许 1禁止）
     */
    @ExcelProperty("是否并发执行")
    private String concurrent;

    /**
     * 状态（0正常 1暂停）
     */
    @ExcelProperty("状态")
    private String status;

    /**
     * 备注信息
     */
    @ExcelProperty("备注信息")
    private String remark;

    private Date nextValidTime;

    @ExcelProperty("创建时间")
    private Date createDate;

    public Date getNextValidTime() {
        if (StringU.isNotEmpty(cronExpression)) {
            return CronUtils.getNextExecution(cronExpression);
        }
        return null;
    }

}